import { JKManager } from "../../../JKCore/Script/JKManager";
import { NormalViewBase } from "../../../JKCore/Script/View/NormalViewBase";

const { ccclass, property } = cc._decorator;

/**
 * 登录界面
 */
@ccclass
export class LaunchView extends NormalViewBase {
    onLoad(): void {
        super.onLoad()
        cc.log(`${cc.js.getClassName(this)} onLoad`)

        // Ui
    }

    init(data: any): void {
        cc.log(`${cc.js.getClassName(this)} init data = `, data)

        // data = {
        // }

        // Ui
        let dataUi = {
        }
        this._dataUpdateTool.put(JKManager.Const.LaunchView.CpntName.Ui, dataUi)
    }

    start(): void {
        cc.log(`${cc.js.getClassName(this)} start`)

        // Ui
        this._dataUpdateTool.registCpntUpdateWithName(JKManager.Const.LaunchView.CpntName.Ui, this._updateCpntUi.bind(this))
        this._updateCpntUi(this._dataUpdateTool.getCpntDataByName(JKManager.Const.LaunchView.CpntName.Ui), true)
    }

    update(dt: number): void {
        super.update(dt)
    }

    close(): void {
        cc.log(`${cc.js.getClassName(this)} close`)

        let data = {}
        JKManager.UiManager.backNormalView(data)
    }

    onDestroy(): void {
        cc.log(`${cc.js.getClassName(this)} onDestroy`)
    }

    // ====================================================================================
    // ===================================== 内部接口 ======================================
    // ====================================================================================

    /**
     * 刷新组件 Ui
     * @param data 数据对象
     * @param immediately 是否同步刷新
     */
    private _updateCpntUi(data: any, immediately: boolean = false): void {
        cc.log(`${cc.js.getClassName(this)} _updateCpntUi data = `, data)

        this._taskQueueTool.addCmd({
            cmd: JKManager.Const.LaunchView.Cmd.UpdateCpntUi,
            params: {},
            call: (cmd, params) => {
                cc.log(`${cc.js.getClassName(this)} Cmd.UpdateCpntUi params = `, params)

                this._taskQueueTool.doneCmd(cmd)
            }
        }, immediately)
    }

    // ====================================================================================

    // ====================================================================================
    // ===================================== 外部接口 ======================================
    // ====================================================================================
}